package com.neuedu.corejava.ch4;
import java.util.Arrays;

public class SortClass {
	
	public static void main(String[] args) {
		//给定一个int类型的数组,保持班级同学的年龄
		//编写一个算法对年龄进行排序,分别进行升序和序排序 
		//15分
		int ages[] = { 21,20,25,22,23,22,21,23 };
		bubbleSortAsc(ages);   //方法的调用
		printArray(ages);      //方法的调用
		bubbleSortDesc(ages);  //方法的调用
		printArray(ages);      //方法的调用
		
		int ages2[] = { 21,20,25,22,23,22,21,23 };
		//import java.util.Arrays; --java语言的api工具类
		Arrays.sort(ages); //是一个升序排序
		//printArray(arrAge2); 
		//排序的使用思路：先按照特定的规则进行排序，如果需要升序和降序，只需要反向输出就可以了
		for (int i = ages.length-1; i >= 0; i--) {
			System.out.print(ages[i]+" " );
		}
		
		
		
	}
	
	
	public static void printArray(int[] data){
		for(int d:data){
			System.out.println(d+"\t");
		}
		System.out.println();
	}
		
	public static void bubbleSortDesc(int[] data){
		if(data==null) { return;}
		for (int i = 0; i < data.length; i++) {
			for (int k= 0; k< data.length-1-i; k++) {
				if (data[k] < data[k + 1]) {   //小于号就是降序
					int tmp = data[k];
					if(data[k] <data[k + 1]){
						data[k] = data[k + 1];
						data[k + 1] = tmp;
					}
				}
			}
		}
	}
	
	
	//升序
	//在一个类中可以编写一些方法
		//方法的基本结构：
		//1.public 访问修饰符号      static 静态修饰符号     --可选
		//2.void返回值类型                                                              --必选
		//3.printArray方法名称  					--必选
		//4(int[] arrAge)称参数列表   				--参数变量可选   括号必须有
		//5.{}方法体	
		public static void bubbleSortAsc(int[] data) {
			if(data==null) {return;}
			for (int i = 0; i < data.length; i++) {
				for (int k= 0; k< data.length-1-i; k++) {
					if (data[k] < data[k + 1]) {   //大于号就是降序
						int tmp = data[k];
						if(data[k] > data[k + 1]){
							data[k] = data[k + 1];
							data[k + 1] = tmp;
						}
					}
				}
			}
		}
	
}
